package com.ww.springboot.boot.algorithm.stack;

import com.ww.springboot.boot.util.SudokuUtil;
import com.ww.springboot.boot.util.SudokuUtil2;

import java.util.HashSet;
import java.util.Set;
import java.util.Stack;

/**
 * 3*3 数独解法
 * 解题思路:
 * 1.穷举 跟迷宫一个解法
 * 优化:已经走过的失败路线是不是可以不再走 没必要从1开始+ 直接找出缺失的值 再遍历更好
 *
 * @author wanwei
 * @since 2021-03-26 17:29
 */
public class SudokuDemo {
    /**
     *
     */
    private static int[][] array =
            {{5, 3, 0, 0, 7, 0, 0, 0, 0},
                    {6, 0, 0, 1, 9, 5, 0, 0, 0},
                    {0, 9, 8, 0, 0, 0, 0, 6, 0},
                    {8, 0, 0, 0, 6, 0, 0, 0, 3},
                    {4, 0, 0, 8, 0, 3, 0, 0, 1},
                    {7, 0, 0, 0, 2, 0, 0, 0, 6},
                    {0, 6, 0, 0, 0, 0, 2, 8, 0},
                    {0, 0, 0, 4, 1, 9, 0, 0, 5},
                    {0, 0, 0, 0, 8, 0, 0, 7, 9}};

    public static void main(String[] args) {
        SudokuUtil2.solve(array);
        System.out.println(SudokuUtil2.print(array));
    }
}
